package activeQM;


import java.rmi.RemoteException;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;

import org.apache.activemq.command.ActiveMQObjectMessage;

import contenedorSpring.Contenedor;
import catalogos.CatalogoLogin;
import rmi.ClienteRMI;

public class ClienteQMColaServidor implements MessageListener {
	private ClienteRMI servicios;

	public ClienteQMColaServidor() {
		super();
	}

	/**
	 * @param servicios
	 *            the servicios to set
	 */
	public void setServicios(ClienteRMI servicios) {
		this.servicios = servicios;
	}

	@Override
	public void onMessage(Message m) {
		ActiveMQObjectMessage om = (ActiveMQObjectMessage) m;
		try {
			String receivedObject = (String) om.getObject();
			/*
			 * datos[0] = user datos[1] = pass datos[2] = ip datos[3] tipo
			 */
			String[] datos = receivedObject.split(";");
			CatalogoLogin catalogo = (CatalogoLogin) Contenedor.getSingleton()
					.getApplicationContext().getBean("catalogoLogin");
			// validar login
			Boolean login = catalogo.validarUsuario(datos[0], datos[1]);
			servicios.consumirServicoControlRemoto(datos[2], login);
			//informar al profesor
			if(login && servicios.exixteEstudiante(datos[2]))
			{
				ProductorQMColaProfesor productor =  (ProductorQMColaProfesor) Contenedor.getSingleton().getApplicationContext().getBean("producerColaEstudiantesActivos");
				productor.sendMessages(datos[2] + ";" + catalogo.getNombreUsuario(datos[0], datos[1]));
			}
		} catch (JMSException | RemoteException  e) {
			throw new RuntimeException(
					"An exception occured while trying to get a JMS object:"
							+ e.getMessage(), e);
		}
	}
}
